Add release-tracker-workflow pipeline for Shaman-based RC testing#2539
Add release-tracker-workflow pipeline for Shaman-based RC testing#2539
Conversation
| string(name: 'CEPH_REPO', defaultValue: 'https://github.com/ceph/ceph.git') | ||
| string(name: 'CEPH_BRANCH', defaultValue: 'main') | ||
| string(name: 'CEPH_SHA1', defaultValue: '', description: 'Optional: Ceph commit SHA1 to use. If set, run on this SHA1 (must exist on Shaman). Empty = resolve from branch tip.') | ||
| string(name: 'RELEASE_VERSION', defaultValue: '') |
There was a problem hiding this comment.
Is this a release version of Ceph? Like a tag?
There was a problem hiding this comment.
Can you put an example in the description please
|
What is a release tracker? |
The tracker meant for a Ceph release like below - |
| steps { | ||
| script { | ||
| def w = "${env.PIPELINE_DIR}/scripts/wait_for_shaman_sha1.py" | ||
| if (fileExists(w)) sh "python3 ${w} --branch ${params.CEPH_BRANCH} --sha1 ${env.SHA1} --timeout ${params.SHAMAN_WAIT_TIMEOUT} --interval ${params.SHAMAN_WAIT_INTERVAL}" |
There was a problem hiding this comment.
Let's say Ubuntu builds always take 1 hour and CentOS builds always take 2 hours. How does this handle shaman saying, "Yes, Ubuntu is done?" Won't this proceed with scheduling a run for CentOS and Ubuntu because we're not checking for all distros?
There was a problem hiding this comment.
@djgalloway Good question. The script already waits for all configured platforms. By default it checks both ubuntu-jammy-default and centos-9-default and only proceeds when the SHA1 is present on all of them (all(...) on line 46). The --platform argument can be customized if different distros are needed.
|
I guess I'm fine with this conceptually. Has it been tested anywhere? I'd like to see it working. |
I am working on getting logs for this, will share ASAP |
Signed-off-by: deepssin <deepssin@redhat.com>
24ec0e7 to
ea0f0da
Compare
|
Here are logs from my jenkins instance - release-testing.log |
|
I just connected soko04 to Jenkins - https://jenkins.ceph.com/computer/10%2E20%2E192%2E14%2Bsoko04/ |
|
@djgalloway, thanks! -I tried to test the release-tracker pipeline on soko04 it's failing because teuthology hits Paddles over HTTPS and the Sepia cert isn’t trusted for the jenkins-build user. can we add the Sepia CA to the trust store on soko04 so jenkins-build can reach https://paddles-paddles.apps.pok.os.sepia.ceph.com? https://jenkins.ceph.com/view/all/job/preserve-release-tracker-workflow/13/console |
Hm, it actually already is. Does python need to be informed of this somehow? |
|
fwiw, this works too:
strace shows that it opens /etc/ssl/certs/ca-certificates.crt |
|
Python’s ssl module uses the system CA store (/etc/ssl/certs/ca-certificates.crt), so your test works. The problem is that the requests library (used by teuthology) uses certifi’s bundled certs by default, not the system store. Certifi’s bundle doesn’t include the Sepia CA. one way is to point requests at the system certs: export REQUESTS_CA_BUNDLE=/etc/ssl/certs/ca-certificates.crt I've added this as a param in my test pipeline and was able to trigger a teuthology run https://jenkins.ceph.com/view/all/job/preserve-release-tracker-workflow/29/console , but I'm not sure parametrizing the CA bundle path is the right approach. might be we can have this a global variable set on the machine . Thoughts? |
|
I put |
|
interesting. On Ubuntu, the system "python3-certifi" library contains the library modified to use /etc/ssl: Perhaps we should install it with the system package. Perhaps there are similar things for el systems. |
This adds a Jenkins pipeline to automate RC testing for release trackers: resolve or pass a Ceph SHA1, wait for it on Shaman, schedule teuthology suites (in parallel), aggregate results, and optionally post to Redmine and send email. There is no build step; the pipeline assumes the SHA1 is already available on shaman.
Note: The job needs to run on a teuthology agent (that means we need to add teuthology-node as an agent). The pipeline is parameterized (e.g. AGENT_LABEL, teuthology paths, Paddles/Pulpito URLs) so it can be adapted to different environments.
This is meant as a starting point for discussion—defaults and layout may need to change depending on how we want to run this in production (e.g. which Jenkins, which agents, credentials). Happy to adjust based on feedback.